// license-header java merge-point
/**
 * This is only generated once! It will never be overwritten.
 * You can (and have to!) safely modify it by hand.
 */
package fr.upstlse.glre.business.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import fr.upstlse.glre.business.domain.Actualite;
import fr.upstlse.glre.business.domain.ActualiteDao;
import fr.upstlse.glre.business.vo.ActualiteSearchCriteriaVO;
import fr.upstlse.glre.business.vo.ActualiteVO;

/**
 * @see fr.upstlse.glre.business.service.ActualiteService
 */
public class ActualiteServiceImpl
    extends fr.upstlse.glre.business.service.ActualiteServiceBase
{
	private static Logger LOGGER = Logger.getLogger(ActualiteServiceImpl.class);

    /**
     * @see fr.upstlse.glre.business.service.ActualiteService#createActualite(fr.upstlse.glre.business.vo.ActualiteVO)
     */
    protected long handleCreateActualite(fr.upstlse.glre.business.vo.ActualiteVO pActualiteVO)
        throws java.lang.Exception
    {
    	Actualite lActualite = getActualiteDao().actualiteVOToEntity(pActualiteVO);
    	long lId = getActualiteDao().create(lActualite).getId();
        return lId;
    }

    /**
     * @see fr.upstlse.glre.business.service.ActualiteService#updateActualite(fr.upstlse.glre.business.vo.ActualiteVO)
     */
    protected void handleUpdateActualite(fr.upstlse.glre.business.vo.ActualiteVO pActualiteVO)
        throws java.lang.Exception
    {
    	Actualite lActualite = getActualiteDao().actualiteVOToEntity(pActualiteVO);
    	getActualiteDao().update(lActualite);
    }

    /**
     * @see fr.upstlse.glre.business.service.ActualiteService#deleteActualite(fr.upstlse.glre.business.vo.ActualiteVO)
     */
    protected void handleDeleteActualite(fr.upstlse.glre.business.vo.ActualiteVO pActualiteVO)
        throws java.lang.Exception
    {
    	Actualite lActualite = getActualiteDao().actualiteVOToEntity(pActualiteVO);
    	getActualiteDao().remove(lActualite);
    }

    /**
     * @see fr.upstlse.glre.business.service.ActualiteService#getById(long)
     */
    protected ActualiteVO handleGetById(long pId)
        throws java.lang.Exception
    {
    	ActualiteVO lActualiteVO = (ActualiteVO) getActualiteDao().findById(ActualiteDao.TRANSFORM_ACTUALITEVO, pId);
    	return lActualiteVO;
    }

    /**
     * @see fr.upstlse.glre.business.service.ActualiteService#getAllActualites()
     */
    protected java.util.List handleGetAllActualites()
        throws java.lang.Exception
    {
        List<ActualiteVO> lActualites = (List<ActualiteVO>) getActualiteDao().loadAll(ActualiteDao.TRANSFORM_ACTUALITEVO);
        return lActualites;
    }

	@Override
	protected List handleFindActualite(
			ActualiteSearchCriteriaVO pActualiteSearchCriteriaVO)
			throws Exception {
		
		List<Actualite> lActualites = getActualiteDao().findByCriteria(pActualiteSearchCriteriaVO);
		
		List<ActualiteVO> lActualiteVOs = new ArrayList<ActualiteVO>(lActualites.size());
		for(Actualite lActualite : lActualites) {
			ActualiteVO lActualiteVO = getActualiteDao().toActualiteVO(lActualite);
			lActualiteVOs.add(lActualiteVO);
		}
		return lActualiteVOs;
	}

	@Override
	public List findActualite(
			ActualiteSearchCriteriaVO pActualiteSearchCriteriaVO) {
		try
        {
            return this.handleFindActualite(pActualiteSearchCriteriaVO);
        }
        catch (Throwable th)
        {
            throw new fr.upstlse.glre.business.service.ActualiteServiceException(
                "Error performing 'fr.upstlse.glre.business.service.ActualiteService.findActualite(fr.upstlse.glre.business.vo.ActualiteSearchCriteriaVO pActualiteSearchCriteriaVO)' --> " + th,
                th);
        }
	}

	@Override
	protected void handleDeleteActualite(long pId) throws Exception {
		if(LOGGER.isDebugEnabled()) {
			LOGGER.debug("Actualite id = " + pId);	
		}
		getActualiteDao().remove(pId);
	}
}